package com.christina.service.domain.chat;

import com.christina.service.domain.chat.model.ChatRequest;
import com.christina.service.domain.chat.model.ChatResponse;
import reactor.core.publisher.Flux;

/**
 * 聊天领域服务接口
 * 
 * @author Christina
 */
public interface ChatDomainService {
    
    /**
     * 处理聊天消息
     * 
     * @param request 聊天请求
     * @return 聊天响应
     */
    ChatResponse processChat(ChatRequest request);
    
    /**
     * 流式聊天处理
     * 
     * @param request 聊天请求
     * @return 流式响应
     */
    Flux<String> processChatStream(ChatRequest request);
    
    /**
     * 获取聊天历史
     * 
     * @param userId 用户ID
     * @param sessionId 会话ID
     * @param limit 限制数量
     * @return 聊天历史
     */
    Object getChatHistory(Long userId, String sessionId, int limit);
    
    /**
     * 清除聊天历史
     * 
     * @param userId 用户ID
     * @param sessionId 会话ID
     * @return 清除结果
     */
    boolean clearChatHistory(Long userId, String sessionId);
    
    /**
     * 分析聊天情感
     * 
     * @param message 消息内容
     * @return 情感分析结果
     */
    Object analyzeChatSentiment(String message);
}